# frozen_string_literal: true

module Reports::TimeToFirstResponse
  extend ActiveSupport::Concern

  class_methods do
    def report_time_to_first_response(report)
      category_filter = report.filters.dig(:category)
      category_id, include_subcategories = report.add_category_filter

      report.icon = "reply"
      report.higher_is_better = false
      report.data = []
      report.average = true

      Topic
        .time_to_first_response_per_day(
          report.start_date,
          report.end_date,
          category_id: category_id,
          include_subcategories: include_subcategories,
        )
        .each { |r| report.data << { x: r["date"], y: r["hours"].to_f.round(2) } }

      report.prev30Days =
        Topic.time_to_first_response_total(
          start_date: report.start_date - 30.days,
          end_date: report.start_date,
          category_id: category_id,
          include_subcategories: include_subcategories,
        )
    end
  end
end
